package com.huangguolin.cloud.file.service;

import com.huangguolin.cloud.file.entity.SearchFileEntity;
import com.huangguolin.cloud.mybatis.entity.PtFileEntity;
import com.huangguolin.cloud.mybatis.flexigrid.PadingRstEntity;
import com.huangguolin.cloud.mybatis.flexigrid.PagingEntity;
import com.huangguolin.cloud.mybatis.ztree.ZtreeEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;

import java.io.InputStream;
import java.util.List;


public interface FileService {

    /**
     * 单位天
     */
    int UTIL_DATE = 60*60*24;
    /**
     * 单位天
     */
    int UTIL_HOURE = 60*601;
    /**
     * 文件类型:文件夹
     */
    Integer FILE_TYPE_DIR = 1;
    /**
     * 分页查询
     * @param search 查询条件
     * @param paging 分页信息
     * @return
     */
    PadingRstEntity<PtFileEntity> queryFileListByPage(SearchFileEntity search, PagingEntity paging);

    /**
     * 文件同步
     */
    void synchFileData();

    /**
     * 文件复制
     */
    void copyFileDate();

    /**
     *
     */
    void queryFileByClick();

    /**
     * 下载文件
     * @param fileUuid
     * @return
     */
    ResponseEntity<byte[]> downloadFile(String fileUuid);

    /**
     * 查询父文件信息
     * @param fileUuid
     * @return
     */
    PtFileEntity queryParentFileInfoById(String fileUuid);

    /**
     *
     * @param fileUuid
     * @return
     */
    String getPreUrl(String fileUuid);

    /**
     * 查询文件ztree列表
     * @return
     */
    List<ZtreeEntity> queryFileZtreeall();



    /**
     * 获取文件分享链接
     * @param fileUuid
     * @param validityDate
     * @return
     */
    String getShareFileLink(String fileUuid, String validityDate);

    /**
     * 获取文件分享链接二维码
     * @return
     */
    ResponseEntity<byte[]> getQRCodeShare();

    /**
     * 上传文件
     * @param fileItem
     * @param inputStream
     */
    void uploadFile(String fileItem, InputStream inputStream);

    /**
     * 修改文件名称
     * @param fileName
     * @param fileUuid
     */
    void modifyFile(String fileName, String fileUuid);

    /**
     * 文件复制
     * @return
     */
    PtFileEntity saveFileRefCopy(String fileUuid, String pId);

    /**
     * 查询列表信息
     * @return
     */
    List<ZtreeEntity> queryAclZtree(String fileUuid);
    /**
     * 设置acl
     * @return
     */
    void setObjectAcl(String fileUuid, String aclArray);
    /**
     * 文件移动
     * @param fileUuid
     * @param pId
     * @return
     */
    PtFileEntity moveFileByBatch(String fileUuid, String pId);

    /**
     * 文件删除
     * @param fileUuid
     */
    void deleteFile(String fileUuid);


}
